package robot.io.capteurs;

import robot.IRobot;
import environnement.Environnement;

/**
 * Class PresenceDevant
 * Capteur de présence, détecte la présence d'un mur, d'un robot ou d'un objet
 * juste devant le robot.
 */
public class PresenceDevant implements ICapteur
{

    //
    // Fields
    //
    private boolean presence = false;

    /**
     * Objet environnement (plateau de jeu)
     */
    private Environnement env = Environnement.getInstance();

    //
    // Methods
    //
    //
    // Accessor methods
    //
    /**
     * 1 lors de la présence d'un mur devant, 0 sinon
     */
    @Override
    public double getValeur()
    {
        if (this.presence)
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }

    /**
     * Modifie la valeur du capteur
     */
    @Override
    public void setValeur(double valeur)
    {
        if (valeur > 0.5)
        {
            this.presence = true;
        }
        else
        {
            this.presence = false;
        }
    }

    //
    // Other methods
    //
    /**
     * @param        robot Robot
     */
    @Override
    public void miseAJourCapteur(IRobot robot)
    {
        if (robot.getX() != this.env.getX() + 1 && robot.getY() != env.getY() + 1
                && robot.getX() != env.getY() + env.getLargeur() - 1 && robot.getY() != env.getY() + env.getLongueur() - 1)
        {
            this.presence = false;
        }
        else
        {
            this.presence = true;
        }
    }
}
